# MongoDB数据存储结构
# MongoDB数据服务(后台进程-无界面)
#     其它数据库
#     my_express_server数据库
#         user        collection(文件夹)
#         xx.bson     文档(文件) 
# MongoDB Compass(前台进程-有界面)

# 切换到指定数据库（不存在则创建）
use my_express_server;

# CRUD操作
# Create创建/增加 Retrieve获取 Update更新 Delete删除

# 添加一条数据（如果集合user不存在会默认创建）
db.user.insertOne(
   { username:"heige",password:"123456" }
);

# 一次性插入多条数据（如果集合products不存在会默认创建）
db.products.insertMany( [
    { item: "card", qty: 15 },
    { item: "envelope", qty: 20 },
    { item: "stamps" , qty: 30 },
    { item: "stamps" , qty: 40 },
    { item: "stamps" , qty: 50 },
] );

# 删除一条数据
db.products.deleteOne( 
    { "_id" : ObjectId("62eb3d94ad6e2095b8ea917c") } 
);

# 删除多条数据
db.products.deleteMany( 
    { "item" : "stamps" } 
);

# $gt = greaterThan 
# $lt = lessThan gte
# $gte = greaterThan or Equal
# $lte = lessThan or Equal
# qty>40的producets数据都死光光
db.products.deleteMany( 
    { "qty" : { $gte : 40 } } 
);
# name为heige 且qty位于[40,80)区间
db.products.deleteMany( 
    { 
        "name":"heige",
        "qty" : 
        { $and:
            [
                { $gte : 40 },
                { $lt : 80 },
            ]
        } 
    } 
);
# name为heige 且qty小于40或大于80
db.products.deleteMany( 
    { 
        "name":"heige",
        "qty" : 
        { $or:
            [
                { $lt : 40 },
                { $gt : 80 },
            ]
        } 
    } 
);

# 修改数据：item为card的第一条数据 设置qty为3
db.products.updateOne(
  { "item" : "card" },
  { $set: { "qty" : 3 } }
);

# 将所有item为card数据记录的qty设为3
db.products.updateMany(
  { "item" : "card" },
  { $set: { "qty" : 3 } }
);

# 查询所有产品数据
db.products.find();
db.products.find({});

# 按条件查询：查询存货小于20的所有产品数据
db.products.find( 
    { qty: { $lt: 20 } } 
);

# 每页10条 取第5页 （跳过前40条然后取10条）
db.products.find( 
    { qty: { $lt: 20 } } 
)
.skip(40)
.limit(10)